home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 7
/
Aminet 7 - August 1995.iso
/
Aminet
/
comm
/
mebbs
/
gmine21.lha
/
GOLDMINE
/
GOLDMINE.REXX
< prev
next >
Wrap
OS/2 REXX Batch file
|
1994-09-01
|
10KB
|
345 lines
/* original COC BBS 414-633-1172 */
/* re-written and improved by */
/* Robert Lehman of Southwinds bbs for mebbsnet >1.5x*/
/* Improved Even More By Eric Douglas A.A.A. CLUB BBS*/
/* Sept. 1st 1994 (702) 243-9526 */
SIGNAL ON ERROR
SIGNAL ON SYNTAX
SIGNAL ON IOERR
SIGNAL ON FAILURE
parse arg LineNumber
OPTIONS RESULTS
DoorName = "Goldmine"
if( ~show( 'l', "mebbsarexx.library" ) )then do
if( ~addlib( "mebbsarexx.library", 0, -30, 0 ) )then do
say "Could not open library"
exit 10
end
end
/* make sysop changes here */
handles='yes' /* change to 'no' if your bbs dont allow handles */
Bulpath='doors:goldmine/highest.txt' /* change to what path you want the hi score file kept */
/* do not modify anything below this line */
version = " Version 2.1 "
if handles = yes then do
call getvar doorname,linenumber,21
UName = result
end
else do
call getvar doorname,linenumber,1
UName = result
end
Points=0
highest = 0
highname = 0
call getvar doorname,linenumber,8
gfx = result
if gfx = 1 then do
CLS = 'H'
HOM = ''
BGD = '
'
RED = '
'
YLW = '
'
GRN = '
'
CYN = '
'
MAG = '
'
BLU = '
'
GCN = '
'
RES = ''
end
else do
CLS = 'H'
HOM = ''
BGD = ''
RED = ''
YLW = ''
GRN = ''
CYN = ''
MAG = ''
BLU = ''
GCN = ''
RES = ''
end
blanks = ' '
Round=0
Times=10
BCK1='25H'
BCK2='25H'
BCK3='6H'
Intro:
call message doorname,linenumber, CLS,1
call message doorname,linenumber, YLW' _',1
call message doorname,linenumber, ' / _ |\/|',1
call message doorname,linenumber, ' \_/'RES'old 'YLW' | |'RES'ine',1
call message doorname,linenumber, ' ',1
call message doorname,linenumber, BLU' 'version,1
call message doorname,linenumber, ' ',1
call message doorname,linenumber, ' ',1
call message doorname,linenumber, ' ',1
call message doorname,linenumber, GRN' You have 'BLU'10'GRN' tries to find the gold.',1
call message doorname,linenumber, CYN,1
Tries = 0
call hotkey doorname,linenumber, 'Do you need instructions (y/N)? '
/*call check*/
Inst = upper(result)
if Inst='Y' then call Docs
call time 'R' /* reset timer */
do i = 1 to 10
highscore.i = 0
highname.i = ' '
end
call message doorname,linenumber, CLS,1
call message doorname,linenumber, ' Top Goldminer',1
call old_highest /* Get Hi Score and display it */
do i = 1 to 1
call message doorname,linenumber, highname.i' Found a total of 'highscore.1' Gold bars',1
end
call message doorname,linenumber,'',1
call hotkey doorname,linenumber, 'Hit return be BEGIN the GAME....'
call check
call Randy
return
Randy:
Round=Round+1
Times=Times-1
Tries=1
X=RANDOM(1,10,Time(s)) /* Row */
Y=RANDOM(1,10,TIme(s)) /* Column */
Grid:
call message doorname,linenumber, RES||CLS,1
call message doorname,linenumber, MAG' ___________________',1
call message doorname,linenumber, GRN' 1 'MAG'|_|_|_|_|_|_|_|_|_|_|',1
call message doorname,linenumber, GRN' 2 'MAG'|_|_|_|_|_|_|_|_|_|_| 'BLU'N',1
call message doorname,linenumber, GRN' 3 'MAG'|_|_|_|_|_|_|_|_|_|_|',1
call message doorname,linenumber, GRN' 4 'MAG'|_|_|_|_|_|_|_|_|_|_| 'YLW'|',1
call message doorname,linenumber, GRN' 5 'MAG'|_|_|_|_|_|_|_|_|_|_| 'YLW'|',1
call message doorname,linenumber, GRN' 6 'MAG'|_|_|_|_|_|_|_|_|_|_| 'BLU'W 'YLW'---|--- 'BLU'E',1
call message doorname,linenumber, GRN' 7 'MAG'|_|_|_|_|_|_|_|_|_|_| 'YLW'|',1
call message doorname,linenumber, GRN' 8 'MAG'|_|_|_|_|_|_|_|_|_|_| 'YLW'|',1
call message doorname,linenumber, GRN' 9 'MAG'|_|_|_|_|_|_|_|_|_|_|',1
call message doorname,linenumber, GRN' 10 'MAG'|_|_|_|_|_|_|_|_|_|_| 'BLU'S',1
call message doorname,linenumber, CYN' 1 2 3 4 5 6 7 8 9 10'RES,1
call message doorname,linenumber, ' ',1
call message doorname,linenumber, GRN,1
call Ask
return
Ask:
call message doorname,linenumber, GRN 'H',1
call hotkey doorname,linenumber, ' Enter Row (1-10) > 'BCK1
A = upper(result)
call check
if A='Q' then call getout
if A='?' then call Docs
if A<1 | A>10 then call Ask
if A=1 then C=3
if A=2 then C=4
if A=3 then C=5
if A=4 then C=6
if A=5 then C=7
if A=6 then C=8
if A=7 then C=9
if A=8 then C=10
if A=9 then C=11
if A=10 then C=12
call message doorname,linenumber, CYN 'H',1
call hotkey doorname,linenumber, ' Enter Column (1-10) > 'BCK2
D = upper(result)
call check
if D = 'Q' then call getout
if D<1 | D>10 then call Ask
if D=1 then E=6
if D=2 then E=8
if D=3 then E=10
if D=4 then E=12
if D=5 then E=14
if D=6 then E=16
if D=7 then E=18
if D=8 then E=20
if D=9 then E=22
if D=10 then E=24
if A<X then Hint1='South'
if A>X then Hint1='North'
if A=X then Hint1=' '
if D>Y then Hint2='West'
if D<Y then Hint2='East'
if D=Y then Hint2=' '
call Sendit
return
Sendit:
if A=X & D=Y then call Won
Tries=Tries+1
if Tries>Times+1 then call Lost
F=A+2
call message doorname,linenumber, YLW' Hint: 'BLU Hint1 Hint2,0
call message doorname,linenumber,'',1
call message doorname,linenumber, MAG' Guess 'YLW Tries,1
call message doorname,linenumber, HOM''F';'E'H'BGD' 'RES,1
call message doorname,linenumber, 'H',1
call Ask
return
Won:
doo=Points
Points = Points+((11-Tries)*100)
coo=doo-Points
coo=coo-(coo*2)
eoo=Tries-1
call message doorname,linenumber, CLS,1
call message doorname,linenumber, ' ',1
call message doorname,linenumber, GRN' You made it through round 'MAG Round GRN'.',1
call message doorname,linenumber, ' You found the gold in 'BLU Tries GRN'tries!',1
call message doorname,linenumber, ' ',1
call message doorname,linenumber, CYN' You found 'GRN'$'RED coo CYN'this round.',1
call message doorname,linenumber, ' You now have 'GRN'$'YLW Points CYN'gold.'RES,1
call message doorname,linenumber, ' ',1
call message doorname,linenumber, YLW' You now have 'RED Times YLW'tries to find the gold.',1
boo=Round+1
call hotkey doorname,linenumber, ' Are you ready for round 'MAG boo YLW'('GRN'y'YLW'/'RED'N'YLW') ? 'RES
Again = upper(result)
call check
if Again = 'N' | Again=' ' then call new_highest
if Again = 'N' then call getout
if Again = 'Y' then call Randy
return
Lost:
doo=Points
Points = Points+((11-Tries)*100)
coo=doo-Points
coo=coo-(coo*2)
call message doorname,linenumber, CLS,1
call message doorname,linenumber, ' ',1
call message doorname,linenumber, GRN' You lost in round 'MAG'Round'GRN'.',1
call message doorname,linenumber, ' ',1
call message doorname,linenumber, CYN' You found 'GRN'$'RED'coo 'CYN'this round.',1
call message doorname,linenumber, ' You now have 'GRN'$'YLW'Points 'CYN'gold.'RES,1
call message doorname,linenumber, ' ',1
call new_highest
call hotkey doorname,linenumber, 'Hit RETURN when ready....'
call check
call getout
return
old_highest:
if ~Open(fnn,bulpath,'R') then return
do i=1 to 10
highname.i = Readln(fnn)
highscore.i = Readln(fnn)
end
junk = Close(fnn)
return
new_highest:
if UName = '' then return /* saves from screwups from running offline */
if points <= highscore.10 then return
call message doorname,linenumber, ' ',1
call message doorname,linenumber, 'CONGRATULATIONS!',1
call message doorname,linenumber, 'You are in the top 10! Saving your name and score for posterity...',1
highscore.10 = points
highname.10 = UName
do forever
changes = 0
do i = 1 to 9
ihatearexx = i+1
if highscore.ihatearexx > highscore.i then
do
temp = highscore.i
tempname = highname.i
highscore.i = highscore.ihatearexx /* Bubblehead sort */
highname.i = highname.ihatearexx
highscore.ihatearexx = temp
highname.ihatearexx = tempname
changes = 1
end
end
if changes = 0 then leave
end
if ~Open(fnn,bulpath,'W') then return
do i = 1 to 10
if Writeln(fnn,highname.i) < 1 then return
if Writeln(fnn,highscore.i) < 1 then return
end
junk = Close(fnn)
call hotkey doorname,linenumber, 'Hit RETURN when ready....'
call check
return
Docs:
call Readgra Doorname,Linenumber, 'Doors:Goldmine/Docs'
call grid
return
/*********************Procedures*****************************/
getout:
call message doorname,linenumber, ' ',1
call message doorname,linenumber,CLS'',1
call message doorname,linenumber, ' ',1
call exit_door DoorName,LineNumber
exit 0
die:
call message doorname,linenumber, ' ',1
call message doorname,linenumber,CLS'',1
call message doorname,linenumber, ' ',1
call exit_door DoorName,LineNumber
exit 10
SYNTAX:
call message doorname,linenumber, '*GOLDMINE* Got a syntax error. PLEASE notify the sysop.',1
err_line = SIGL ; sev = RC
Call message doorname,linenumber, 'Line: 'err_line' Severity: 'sev,1
call hotkey doorname,linenumber,'Press return...'
signal Die
check:
call cdetect doorname,linenumber
carrier = result
if carrier = "no carrier!" then do
signal die
end
return
IOERR:
call message doorname,linenumber,"**Crash** Looks like we got an I/O error somewhere!",1
err_line = SIGL ; sev = RC
Call message doorname,linenumber, 'Line: 'err_line' Severity: 'sev,1
call hotkey doorname,linenumber,'Press return...'
signal die
ERROR:
Call message doorname,linenumber, '**ALERT** Error!',1
err_line = SIGL ; sev = RC
Call message doorname,linenumber, 'Line: 'err_line' Severity: 'sev,1
call hotkey doorname,linenumber,'Press return...'
signal die
Crash_N_Burn:
call message doorname,linenumber,"Looks like we're gonna have to bail outta this mess......",1
call exit_door DoorName, LineNumber
exit 10
FAILURE:
Call message doorname,linenumber, '**ALERT** Failure!',1
err_line = SIGL ; sev = RC
Call message doorname,linenumber, 'Line: 'err_line' Severity: 'sev,1
call hotkey doorname,linenumber,'Press return...'
call exit_door DoorName,LineNumber
exit 10